// 路由的拦截处理
import router from "./router";
import useUserStore from "./store/user";
import { message } from "ant-design-vue";
// 判断是否登录
router.beforeEach((to, from, next) => {
  //  除过登陆页面
  if (to.path === "/login") {
    // 判断是否登录
    next();
  } else {
    const userStore = useUserStore();
    //判断是否登录了？
    if (userStore.token) {
      //用户信息（用户 状态 角色）是否存在
      if (userStore.userInfo) {
        //存在
        if (!userStore.userInfo.status) {
          //说明 当前用户已经被禁用了
          message.warning("当前用户已被禁用，联系管理员！");
          next("/login");
        } else if (
          !userStore.userInfo.roles ||
          userStore.userInfo.roles.length === 0
        ) {
          //没有分配角色- 只能访问公共页面信息
          message.warning("当前用户，暂无角色！");
          next();
        } else {
          next();
        }

        next();
      } else {
        //不存在重新发起请求
        userStore
          .getUserInfo()
          .then((res) => {
            //拿到结果放行
            next();
          })
          .catch((e) => {
            //发起请求获取不到
            message.warning("无法获取用户信息");
            next("/login");
            console.log(e);
          });
      }
    } else {
      message.warning("暂无权限");
      //去登录页面
      next("/login");
    }
  }
});
